[Git] rebase コマンドで複数のコミットを 1 つにまとめる
git rebase
git の rebase
はブランチを統合するためのコマンドです。
が、このコマンドは多機能であり、ブランチの統合以外にも様々な処理を行うことができます。
今回は 複数のコミットをひとつにまとめる という処理に的を絞って説明しようと思います。
手順
現在の作業履歴は以下の通りとします。(commit x はコミットメッセージ)
$ git log --oneline 5590c80 commit 3 a4641b0 commit 2 1c3cff8 commit 1 ...
この直近 3 つのコミットを 1 つにまとめましょう。
1. 以下のコマンドを実行する
$ git rebase -i HEAD~3
コミットをまとめるためには -i
というオプションを指定します。
i は interactive の頭文字です。
HEAD~3
で、現在のブランチの先頭から 3 つのコミットを抽出します。
上記のコマンドを実行すると以下の画面が表示されます。(先頭 # はコメント行)
2. pick を fixup に書き換える
2 つめと 3 つめのコミットに対し、コマンド pick
を fixup
に書き換えます。(f
でも OK)
pick
はそのコミットを使用するコマンド、つまり変更なしです。
fixup
はそのコミットを 1 つ前のコミットに統合し、その際コミットメッセージを破棄します。
これらの説明は上記の画面にも書かれています。
3. 保存して終了
デフォルトだと vi が立ち上がっているはずなので :wq
で OK。
これで 3 つのコミットが 1 つにまとめられました。
$ git log --oneline d0f5d1e commit 1 ...
以上です。
ファイルの add
し忘れや軽微な修正などで、余計なコミットを行ってしまったときなどに利用してみてはいかがでしょうか。
もし、コンフリクトなどで rebase に失敗した場合は以下のコマンドで一連の処理を取り消すことができます。
失敗を恐れずに色々試してみましょう。
$ git rebase --abort
リンク
ミレニアム・ファルコン製作日記 #57
57 号 表紙
パーツ
成果
今回の作業は以下の 4 つでした。
- 制御回路基板を取り付ける
- 外部電源ソケットを取り付ける
- 配線を制御回路基板につなぐ
- 搭乗ランプの動作チェック
回路の基盤を取り付けました。
この基盤、16 ものソケットが存在します。
それぞれどこに繋がるかがとても楽しみですね。
船体後部のイオンエンジン部分には間違いなく付くことでしょう!
動作確認もバッチリでした。
スイッチを入れると ウィーン という音とともに搭乗ランプがゆっくり開閉します。
一安心。
それではまた次回。
May the Force be with you!